<?php
// +----------------------------------------------------------------------
// | quanli team
// +----------------------------------------------------------------------
// | Copyright (c) 2013-2020 http://www.fistforward.com/ All rights reserved.
// +----------------------------------------------------------------------
// | Author: create by allen.qiang
// +----------------------------------------------------------------------

/**
 * 短信 邮件 公共方法类
 * @package  htdocs
 * @subpackage  module/base
 * @author   create by allen.qiang
 * @version 1.0
 */
class sysMessageTemplate {


    /**
     * 公共的查询列表页数据
     * @param array  $arg_array                          查询参数数组
     * @return null
     */
    public function search( &$arg_array ) {

        global $G_SHOP;

        //sql字符串
        $sql = '';

        //参数类型字符串
        $params_type = '';

        //参数值数组
        $params_array = array();

        //模板ID
        if (isset($arg_array['templateID']) && is_numeric($arg_array['templateID'])) {
            $sql .= ' AND templateID = ?';
            $params_type .= 'i';
            $params_array[] = $arg_array['templateID'];
        }

        //模板名称
        if (isset($arg_array['templateName']) && !empty($arg_array['templateName'])) {
            $sql .= ' AND templateName like ?';
            $params_type .= 's';
            $params_array[] = '%' . $arg_array['templateName'] . '%';
        }

        //模板别名
        if (isset($arg_array['templateAlias']) && !empty($arg_array['templateAlias'])) {
            $sql .= ' AND templateAlias like ?';
            $params_type .= 's';
            $params_array[] = '%' . $arg_array['templateAlias'] . '%';
        }

        //模板类型
        if (isset($arg_array['type']) && !empty($arg_array['type'])) {
            $sql .= ' AND type = ?';
            $params_type .= 'i';
            $params_array[] = $arg_array['type'];
        }

        //拓展字段
        if (isset($arg_array['extendSql']) && !empty($arg_array['extendSql'])) {
            $sql .= $arg_array['extendSql'];
        }

        if ($sql) {
            $sql = ' WHERE ' . substr($sql, 4);
        }

        if (isset($arg_array['rp']) && $arg_array['rp'] > 1) {

            //统计数量
            $search_sql = 'SELECT COUNT(*) AS item_count FROM sys_message_template ' . $sql;
            $count_array = $G_SHOP->DBCA->stmt_query($search_sql, $params_type, $params_array);

            $item_count = $count_array[0]->item_count;

            if ($item_count == 0) {

                $arg_array['count'] = 0;
                return null;
            }else{
                //分页bug处理
                $arg_array['count'] = $item_count;
                if($arg_array['count'] < $arg_array['rp']){
                    $arg_array['page'] = 1;
                }
            }


            //排序
            if (isset($arg_array['sortname']) && !empty($arg_array['sortname']))
                $sql .= sprintf(' ORDER BY %s %s', $arg_array['sortname'], $arg_array['sortorder']);

            //分页
            if (!isset($arg_array['page']) || !is_numeric($arg_array['page']) || $arg_array['page'] <= 0)
                $arg_array['page'] = 1;

            $sql .= sprintf(' LIMIT %d, %d', ($arg_array['page'] - 1) * $arg_array['rp'], $arg_array['rp']);
        } else {

            //排序
            if (isset($arg_array['sortname']) && !empty($arg_array['sortname']))
                $sql .= sprintf(' ORDER BY %s %s', $arg_array['sortname'], $arg_array['sortorder']);
        }


        //查询自定义模板信息
        $search_sql = 'SELECT * FROM sys_message_template ' . $sql;

        $temp_item_array = $G_SHOP->DBCA->stmt_query($search_sql, $params_type, $params_array);

        if (!$temp_item_array)
            return null;

        foreach ($temp_item_array as &$item) {
            $item_array[] = array(
                'creator' => $item->creator,
                'timeStamp' => $item->timeStamp,
                'createTime' => $item->createTime,
                'templateID' => $item->templateID,
                'templateName' => $item->templateName,
                'templateAlias' => $item->templateAlias,
                'type' => $item->type,
                'content' => $item->content

            );
        }
        return $item_array;
    }


    /**
     * 公共的删除自定义模板方法
     * @param array  $arg_array                          查询参数数组
     * $arg_array(
     * 'delArr'=> array //选中行的templateID
     * )
     * @return null
     */
    public function delMessage(&$arg_array){

        global $G_SHOP;

        //统计不存在的活动数目
        $errorNum = 0;

        //记录要删除的entity对象
        $deleteObjArr = array();

        if (empty($arg_array['delArr'])) {
            return array('code' => 400, 'message' => '请选择要删除的自定义模板');
        }

        //检查要删除的所有活动
        foreach ($arg_array['delArr'] as $templateID) {

            //检查信息是否存在
            $check_obj = new entity('sys_message_template');
            $check_obj->templateID = $templateID;

            if (!$G_SHOP->DBCA->fetch($check_obj)){
                $errorNum++;  //记录不存在的活动数量
            }

            $deleteObjArr[] = $check_obj;
        }

        if ($errorNum > 0) {

            return array('code' => 400, 'message' => '所选部分信息已不存在，请刷新页面');
        }

        try {
            //开启事务
            $G_SHOP->DBCA->beginTransaction();

            //循环删除
            foreach ($deleteObjArr as $delobj) {

                $G_SHOP->DBCA->delete($delobj);
            }

            //提交事务
            $G_SHOP->DBCA->commit();

            return array('message' => '删除成功', 'code' => 200);
            exit;
        } catch (Exception $e) {

            //事务回滚
            $this->dbca->rollBack();

            return array('message' => '系统错误，请与管理员联系', 'code' => 500);

        }
    }

    /**
     * 公共的修改添加自定义模板方法
     * @param array  $arg_array                          查询参数数组
     * $arg_array(
     * 'templateID'=> int //编辑时选中行的templateID
     * )
     * @return null
     */
    public function addMessage(&$arg_array){

        global $G_SHOP;

        if(!isset($arg_array['templateName'], $arg_array['templateAlias'],$arg_array['content']) ){
            return array('code'=>400,'message'=>'参数错误');
        }

        try{

            $messageTemplate = new entity('sys_message_template');

            if(isset($arg_array['templateID']) && is_numeric($arg_array['templateID'])){
                $messageTemplate->templateID = $arg_array['templateID'];
                $G_SHOP->DBCA->fetch($messageTemplate);
                $message = "更新成功";
            }else{
                $message = "添加成功";
            }


            $messageTemplate->creator  =   $_REQUEST['operator'];
            $messageTemplate->type  =   $arg_array['type'];
            $messageTemplate->templateName = $arg_array['templateName'];
            $messageTemplate->templateAlias = $arg_array['templateAlias'];
            $messageTemplate->content = $arg_array['content'];
            $G_SHOP->DBCA->save($messageTemplate);

            return array('code'=>200,'message'=>$message) ;

        }catch (Exception $e){

            error_log($e->getMessage());
            return null;

        }
    }
}